TOP

Operatori SQL ANY și ALL

SQL ANY și ALL Descriere

Instrucțiunile SQL ANY și ALL vă permit să efectuați comparații între valoarea unei coloane și un interval de alte valori.


SQL ANY Descriere

operator ANY:

  • returnează o valoare booleană ca rezultat
  • returnează TRUE dacă ANY din valorile subinterogării se potrivește cu condiția
  • ANY înseamnă că condiția va fi adevărată dacă operația este adevărată pentru oricare dintre valorile din interval.

    ANY Sintaxă

    SELECT column_name(s)
    FROM table_name
    WHERE column_name operator ANY
      (SELECT column_name
       FROM table_name
       WHERE condition)
    
    Operatorul trebuie să fie un operator de comparare standard (=, <>, !=, >, >=, < sau <=).

    SQL ALL Descriere

    Operator ALL:

  • returnează o valoare booleană ca rezultat
  • returnează TRUE dacă valorile subinterogării ALL se potrivesc cu condiția
  • utilizat cu operatorii SELECT, WHERE și HAVING
  • ALL înseamnă că condiția va fi adevărată numai dacă operația este adevărată pentru toate valorile din interval.

    ALL Sintaxă împreună cu SELECT

    SELECT ALL column_name(s)
    FROM table_name
    WHERE condition
    

    ALL Sintaxă împreună cu WHERE sau HAVING

    SELECT column_name(s)
    FROM table_name
    WHERE column_name operator ALL
      (SELECT column_name
       FROM table_name
       WHERE condition)
    
    Operatorul trebuie să fie un operator de comparare standard (=, <>, !=, >, >=, < sau <=).

    Baza de date demonstrativă

    Următorul este un exemplu din tabelul „Products” („Produse”) din baza de date „Northwind”:

    ProductIDProductNameSupplierIDCategoryIDUnitPrice
    1Chais1110 boxes x 20 bags18.00
    2Chang1124 - 12 oz bottles19.00
    3Aniseed Syrup1212 - 550 ml bottles10.00
    4Chef Anton's Cajun Seasoning2248 - 6 oz jars22.00
    5Chef Anton's Gumbo Mix2236 boxes21.35
    6Grandma's Boysenberry Spread3212 - 8 oz jars25.00
    7Uncle Bob's Organic Dried Pears3712 - 1 lb pkgs.30.00
    8Northwoods Cranberry Sauce3212 - 12 oz jars40.00
    9Mishi Kobe Niku4618 - 500 g pkgs.97.00
    10Ikura4812 - 200 ml jars31.00

    Și eșantionul din tabelul „OrderDetails” („Detalii comandă”):

    OrderDetailIDOrderIDProductIDQuantity
    1102481112
    2102484210
    310248725
    410249149
    5102495140
    6102504110
    7102505135
    8102506515
    910251226
    10102515715

    SQL ANY Exemple

    Următoarea interogare SQL listează ProductName dacă găsește orice înregistrare (ANY) în tabelul OrderDetails cu o valoare Quantity egală cu 10 (aceasta va returna TRUE deoarece Quantity din coloana are o valoare 10):

    Run SQLSELECT ProductName
    FROM Products
    WHERE ProductID = ANY
      (SELECT ProductID
       FROM OrderDetails
       WHERE Quantity = 10)
    

    Următoarea interogare SQL listează ProductName dacă găsește orice înregistrare (ANY) în tabelul OrderDetails cu o cantitate mai mare de 99 (aceasta va returna TRUE deoarece coloana Quantity conține unele valori mai mari decât 99):

    Run SQLSELECT ProductName
    FROM Products
    WHERE ProductID = ANY
      (SELECT ProductID
       FROM OrderDetails
       WHERE Quantity > 99)
    

    O altă instrucțiune SQL listează ProductName dacă găsește vreo înregistrare (ANY) în tabelul OrderDetails cu o cantitate mai mare de 1000 (aceasta va returna FALSE deoarece coloana Quantity nu conține valori mai mari decât 10000):

    Run SQLSELECT ProductName
    FROM Products
    WHERE ProductID = ANY
      (SELECT ProductID
       FROM OrderDetails
       WHERE Quantity > 1000)
    

    SQL ALL Exemple

    Următoarea instrucțiune SQL listează toate numele de produse (ALL):

    Run SQLSELECT ALL ProductName
    FROM Products
    WHERE TRUE
    

    Următoarea instrucțiune SQL listează ProductName dacă toate înregistrările (ALL) din tabelul OrderDetails au un număr egal cu 10. Desigur, aceasta va returna FALSE deoarece coloana Quantity are multe valori diferite (nu doar valoarea 10):

    Run SQLSELECT ProductName
    FROM Products
    WHERE ProductID = ALL
      (SELECT ProductID
       FROM OrderDetails
       WHERE Quantity = 10)